/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package questao10;

/**
 * (abstract) Lista + adicionar(String s) + imprimir() (classe) ListaOrdenada --
 * Antes de aplicar os indices de Ordenação, ordenar a lista. (classe)
 * ListaNaoOrdenada -- Não realizar ordenação dos itens antes de aplicar os
 * indices de Ordenação
 *
 * (interface) IndiceOrdenacao + imprimeItensLista() (classe) OrdenacaoNumerica
 * (classe) OrdenacaoAlfabetica (classe) OrdenacaoMarcadorAsterisco (classe)
 * OrdenacaoMarcadorMais
 *
 * ---- padrão Desacoplar uma abstração de sua implementação, de modo que as
 * duas possam variar independentemente
 *
 * @author SDKW
 */
public class Main {

    public static void main(String[] args) {
        System.out.println("########  Questao 10  ###########");
        System.out.println("########  Sem ordenação com topicos numericos  ###########");
        Lista listaNaoOrdenada = new ListaNaoOrdenada(new OrdenacaoNumerica());
        listaNaoOrdenada.adicionar("kassio 05");
        listaNaoOrdenada.adicionar("kassio 03");
        listaNaoOrdenada.adicionar("kassio 01");
        listaNaoOrdenada.adicionar("kassio 04");
        listaNaoOrdenada.adicionar("kassio 02");
        listaNaoOrdenada.imprimir();
        System.out.println("########  Sem ordenação com topicos Alfabetico  ###########");
        listaNaoOrdenada.setIndiceOrdenacao(new OrdenacaoAlfabetica());
        listaNaoOrdenada.imprimir();
        System.out.println("########  Sem ordenação com topicos Marcadores  ###########");
        listaNaoOrdenada.setIndiceOrdenacao(new OrdenacaoMarcadorAsterisco());
        listaNaoOrdenada.imprimir();

        System.out.println("########  Com ordenação com topicos numericos  ###########");
        Lista listaOrdenada = new ListaOrdenada(new OrdenacaoNumerica());
        listaOrdenada.adicionar("kassio 05");
        listaOrdenada.adicionar("kassio 03");
        listaOrdenada.adicionar("kassio 01");
        listaOrdenada.adicionar("kassio 04");
        listaOrdenada.adicionar("kassio 02");
        listaOrdenada.imprimir();
        System.out.println("########  Com ordenação com topicos Alfabetico  ###########");
        listaOrdenada.setIndiceOrdenacao(new OrdenacaoAlfabetica());
        listaOrdenada.imprimir();
        System.out.println("########  Com ordenação com topicos Marcadores  ###########");
        listaOrdenada.setIndiceOrdenacao(new OrdenacaoMarcadorAsterisco());
        listaOrdenada.imprimir();
    }
}
